package thread;

/**
 * 线程的第一种创建方式:
 * 1:继承Thread
 * 2:重写run方法
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
        Thread t1 = new MyThread1();
        Thread t2 = new MyThread2();
        //启动线程要调用start方法，而不是直接调用run方法。
        t1.start();
        t2.start();
    }
}

/**
 * 第一种创建线程的方式
 * 优点:
 * 结构简单，利于匿名内部类形式创建
 *
 * 缺点:
 * 1:存在继承冲突问题
 *   当出现需要继承一线程，但又同时需要继承一个类复用方法时，由于java要求是单继承的，会导致
 *   存在继承冲突问题
 * 2:重写run方法直接将线程任务定义在线程中，会导致线程与任务存在了必然的耦合关系，不利于线程
 *   的重(chong)用
 */
class MyThread1 extends Thread{
    public void run(){
        for (int i = 0; i < 1000; i++) {
            System.out.println("你是谁啊?");
        }
    }
}
class MyThread2 extends Thread{
    public void run(){
        for (int i = 0; i < 1000; i++) {
            System.out.println("开门！查水表的!");
        }
    }
}
